package likou.jindian;

/**
 * @author: Tangxz
 * @email: 1171702529@qq.com
 * @cate: 2020/12/23 08:15
 */
public class _05_03 {
    public static void main(String[] args) {
        System.out.println(reverseBits(-3));
    }

    public static int reverseBits(int num) {
        int l = 0, r = 0, Max = 0;//以0为分界点，L是0左边连续1的数量，R是0右边连续1的数量，Max记录最大值
        for (int i = 0; i < 32; i++) {
            if ((num & 1) == 1) {
                r++;
            } else {
                l = r + 1;
                r = 0;
            } //当遇见0时， 0的左边连续1的数量等于上一个0右边连续1的数量加一（0本身反转后算一个长度）
            Max = Math.max(l + r, Max);
            num >>= 1;
        }
        return Max;
    }
}
